var express = require('express');
var formidable = require("formidable");
var routers = require('./controller/router');
var file = require('./models/file');
var app = express();
var router = express.Router();
var session = require('express-session');
var friendsTool = require('./controller/MLFriendsTool')
var http = require('http').Server(app);

// 引用模型
var MLUser = require('./models/YJ').MLUsers;

var MLFriends = require('./models/YJ').MLFriends;


//使用session
app.use(session({
    secret: 'keyboard cat',
    resave: false,
    saveUninitialized: true
}));

//设置模板引擎
app.set("view engine", "ejs");

//路由中间件，静态页面
app.use(express.static("./public"));
app.use(express.static("./uploads"));


app.get('/cheshiSocker',routers.cheshiSocker);
//后台管理界面
app.get('/admin',routers.showAdmin);
//前台登录请求
app.post('/node/login',routers.nodeLogin);


//管理首页
app.get('/home',routers.showHome);

/********************意见反馈*******************/
//发表患者端意见反馈
app.post('/node/yjhzd/yjfk/',routers.postAdd_hzd_yjfk);
//发表患者端意见反馈
app.post('/node/yjysd/yjfk/',routers.postAdd_ysd_yjfk);

/********************版本控制*******************/
//安卓患者端版本更新
app.post('/node/yjhzd/azhzdVersionControl/',routers.doAZHZDBangBen);
//安卓医生端版本更新
app.post('/node/yjysd/azysdVersionControl/',routers.doAZYSDBangBen);
//ios患者端版本更新
app.post('/node/yjhzd/ioshzdVersionControl/',routers.doIOSHZDBangBen);
//ios医生端版本更新
app.post('/node/yjysd/iosysdVersionControl/',routers.doIOSYSDBangBen);

//管理界面路由
app.get('/bbkz',routers.showBbkz);
//前台版本控制请求
app.post('/node/bbkz',routers.nodeBbkz);
//取得各个历史版本控制
app.post('/node/takeBbkz',routers.nodeTakeBbkz)
//添加版本控制
app.post('/node/yjysd/addBangBen/',routers.doAddBangBen);
/********************好友操作*******************/
//添加好友
app.post('/node/yj/addFriends/',friendsTool.doAddFriends);
//查询新朋友
app.post('/node/yj/getNewFriends/',friendsTool.getNewFriends);
//删除好友
app.post('/node/yj/deleteFriends/',friendsTool.doDeleteFriends);
//查询好友
app.post('/node/yj/myFriends/',friendsTool.doMyFriends);
//设置备注
app.post('/node/yj/doFriendsNote/',friendsTool.doFriendsNote);
//删除好友
app.post('/node/yj/deleteFriend/',friendsTool.deleteFriend);

/********************圈子*********************/
//发送论坛
app.post('/node/yj/addForum/',routers.addForum);

/********************socket******************/
var net = require('net');
userSocket = new Array();
var server = net.createServer(function(connection) {
    //获取IP信息
    var clientIp = connection.address();
    console.log(clientIp + "有客户端连接")
    connection.on('data', function(data) {
        // got data
        // var obj = JSON.stringify();
        var obj = eval("(" + data.toString() + ")");
        userSocket[obj.id] = connection;
        //判断数据库中是否需要推送请求
        friendsTool.socketAllData(obj.id,connection,obj.socketType);
    });
    connection.on('end', function(connection) {
        for (var key in userSocket) {
            var output = userSocket[key];
            //查看socket是否可写
            if(output.writable) {

            }else{
                userSocket[key].destroy()
                delete userSocket[key];
            }
        }
        console.log('客户端连接断开');
    });

    connection.on('error', function(e) {
        console.log(e);
    });
});

//TCP服务器开始端口监听
server.listen(3001, function() {
    console.log('TCP服务启动');
});
//404错误
app.use('/',function (req, res) {
    console.log('404');
    res.send('404');
});

app.listen(3000);
